import java.util.ArrayList;
import java.util.List;

/**
 * @author tmh
 * @date 2024/10/26 22:05
 * @description  因为是从前往后的，所以，用used来筛选没有使用过的数字
 */
public class T46全排列2 {
    List<List<Integer>> result = new ArrayList<>();
    List<Integer> path = new ArrayList<>();
    public List<List<Integer>> permute(int[] nums) {
        boolean[] used = new boolean[nums.length];
        back(nums,nums.length,used);

        return result;

    }
    private void back(int[] nums,int len,boolean[] used){
        if(path.size()>len){
            return;
        }
        if(path.size()==len){
            result.add(new ArrayList<>(path));
        }
        for(int i =0;i<len;i++){
            if (!used[i]){
                path.add(nums[i]);
                used[i]=true;
                back(nums,len,used);
                path.remove(path.size()-1);
                used[i]=false;
            }
        }
    }
}
